1. Field of the Invention
The present invention relates to the field of computer software and, more particularly, to testing applications within a grid environment.
2. Description of the Related Art
A grid computing environment is a distributed computing environment where computing, application, storage, and/or network resources can be shared across geographically disperse organizations. An ideal grid computing environment allows flexible, secure, coordinated resource sharing among dynamic collections of individuals, organizations, and resources. In the grid environment, a variety of computing resources that contribute to a virtual resource pool can be transparently utilized on an as-needed basis. Grid computing resources in the virtual resource pool can be treated as commodities or services, which can be consumed in a manner similar to the commercial consumption of electricity and water.
While grid computing may presently be at an early stage in its evolution, several grid computing environments have been successfully implemented. One noteworthy implementation is the NC BioGrid Project that was successfully implemented in the fall of 2001 to enable researchers and educators throughout North Carolina to pool computing resources for use in sequencing genes and related genetic research. Other notable grid implementations include SETI@home, the Drug Design and Optimization Lab (D2OL), and EUROGRID. Additionally, commercially available software products exist for establishing a customizable grid computing environment, such as Avaki's data grid from Avaki of Burlington, Me. and Grid MP Enterprise from United Devices of Austin, Tex. Further, a number of readily available toolkits and standards have been developed for creating a grid computing environment including, for example, the Globus Toolkit provided by the Globus project and the Open Grid Services Architecture (OGSA).
A grid computing environment can include multiple applications. Each application can include a set of computing resources that performs a series of related tasks. Examples of applications include, but are not limited to, word processors, database programs, Web browsers, development tools, drawing applications, image editing programs, and communication programs. The various computing resources for one application can be distributed across several different grids within a grid computing environment, wherein each grid can contain a myriad of diverse hardware components, such as communication lines, networking routers, servers, workstations, peripherals, intranets, and the like.
One problem with existing grid computing environments relates to testing application changes and/or new application implementations before deployment within an operational grid environment. Testing can be especially important within a grid environment because problems with one grid-enabled application can have cascading effects upon other applications. That is, since many different grid-enabled applications can share pooled resources, one malfunctioning application feature that overly consumes needed resources can affect multiple applications that share the commonly utilized resources. The interdependencies that exist among applications in a grid environment, however, make realistic tests of individual applications extremely difficult.
Conventional testing solutions involve extrapolation and have proven inadequate in modeling the complexities of operational grid behavior. Extrapolation testing methods attempt to simulate operational conditions using small, finite, measurable increments of system resources. The measurable increments are applied to an extrapolation algorithm in order to determine projected computing resource consumption. Extrapolation algorithms can then compare these projected consumptions with estimated computing resource availability. While extrapolation testing methods are useful for characterizing simplistic grid environments, extrapolation methods are inadequate for complex ones. For example, extrapolation testing methods cannot accurately determine behavior of multiple applications interoperating within several grids, especially in the case where each experiences usage peaks and troughs.